﻿using System.Runtime.InteropServices;

namespace Kyoh.Lib.Win32API
{
    /// <summary>ファイルの情報を定義します。</summary>
    public static class FileInfo
    {
        /// <summary>ファイルの種類を取得します。</summary>
        /// <param name="fileName">ファイル名。</param>
        /// <param name="typeName">ファイルの種類。</param>
        /// <returns>取得できた場合は <c>true</c> 、それ以外の場合は <c>false</c> 。</returns>
        public static bool GetTypeName(string fileName, out string typeName)
        {
            if (!System.IO.File.Exists(fileName))
            {
                typeName = string.Empty;
                return false;
            }
            Shell.ShFileInfoW shinfo = new Shell.ShFileInfoW();
            NativeMethods.ShGetFileInfo(
                    fileName,
                    FileAttributesFlags.FILE_ATTRIBUTE_NORMAL,
                    ref shinfo,
                    (uint)Marshal.SizeOf(shinfo),
                    Shell.ShellFileInfoFlags.TypeName
                );
            typeName = shinfo.szTypeName;
            return true;
        }
    }
}
